GtkTreeModelFilter: Fix _iter_previous() when iter points at 2nd node
authorRui Matos <tiagomatos@gmail.com>
Sat, 14 Jul 2012 00:34:26 +0000 (02:34 +0200)
committerKristian Rietveld <kris@loopnest.org>
Tue, 17 Jul 2012 08:50:48 +0000 (10:50 +0200)
GSequence iterators point at the position between two elements so an
iterator pointing at the N tree model node is actually between the N-1
and N sequence elements. This means that asking for the previous
sequence iterator first and then checking if it is the begin iterator
would yeld true for an iterator pointing at the 2nd tree model node
and make us return FALSE mistakenly.

https://bugzilla.gnome.org/show_bug.cgi?id=679910

gtk/gtktreemodelfilter.c

index 2e7d218e8a69a7a6b2e79318a8048601ffb059bc..a8ef24b82678a0a3b92ae4353b4cc0576d03257e 100644 (file)
@@ -3227,12 +3227,12 @@ gtk_tree_model_filter_iter_previous (GtkTreeModel *model,
 
   elt = iter->user_data2;
 
-  siter = g_sequence_iter_prev (elt->visible_siter);
-  if (g_sequence_iter_is_begin (siter))
+  if (g_sequence_iter_is_begin (elt->visible_siter))
     {
       iter->stamp = 0;
       return FALSE;
     }
+  siter = g_sequence_iter_prev (elt->visible_siter);
 
   iter->user_data2 = GET_ELT (siter);